home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / mcomm540.zip / UPDATE.DOC < prev    next >
Text File  |  1991-01-10  |  7KB  |  152 lines

  1.  
  2.  
  3.  
  4.                              MCOMM 5.40 UPDATE NOTES
  5.  
  6.          The 5.40 version of MCOMM corrects two problems:
  7.  
  8.          1) Some UARTs miss transmit interrupts when they are ran in
  9.             full duplex mode.  Code was added to detect missed
  10.             interrupts and correct the situation.  This condition would
  11.             cause previous versions of MCOMM to quit transmitting until
  12.             the transmit buffer was flushed or the port closed and
  13.             reopened.  This bug only showed up when operating in full
  14.             duplex mode and only with some UARTs.  Version 5.40 has been
  15.             tested by running several megabytes of data through 8250,
  16.             16450, and 16550 UARTs in full duplex mode and never fails
  17.             to detect a missed interrupt and correct for it.
  18.  
  19.          2) The loop that loads bytes into the transmit FIFOs (or the
  20.             transmit hold register if the UART isn't a 16550) updates
  21.             the transmit buffer output pointer in a register.  The loop
  22.             is in the transmit interrupt handler and in previous
  23.             versions of MCOMM5 the transmit interrupt handler code was
  24.             called by the routine that started up the transmitter.  If a
  25.             transmit interrupt occurred while the transmit start up code
  26.             was within this loop, the buffer output pointer could be
  27.             corrupted.  The result was scrambled output.  This only
  28.             happened if the transmitter was sent a character, allowed to
  29.             empty, and then immediately sent another character.  If only
  30.             one character was sent at a time slowly, as in typing, or if
  31.             the buffer was loaded up rapidly as in a program loop,
  32.             everything was OK.  If characters were sent in a program loop
  33.             that put a "small" delay between characters (character
  34.             pacing), it often failed.  This was corrected by changing
  35.             the transmit initiate routine so that it toggles the
  36.             transmit interrupt enable bit in the UART's interrupt enable
  37.             register to initiate transmit interrupts rather than calling
  38.             the interrupt handler directly.
  39.  
  40.  
  41.          ADDITIONS:
  42.  
  43.          An option was added to the async_open function to force FIFO
  44.          mode off.  Previously you could OR the ComBase parameter with
  45.          0x8000 and the code skipped over the check for a 16550 UART.
  46.          If it was there and on, it stayed on.  If it was there and off,
  47.          it stayed off.  You can now OR the ComBase parameter with
  48.          0x4000 to force the FIFOs to be off.  If you don't OR anything
  49.          with the ComBase parameter the FIFOs will be enabled if a 16550
  50.          is present.
  51.  
  52.          To deal with problems with the Western Digital 16550, the ASYNC
  53.          port structure is now one element longer.  The new element is
  54.          called 'IERVal'.  Also options were added to allow you to open
  55.          a port without enabling MSR interrupts, LSR interrupts, or
  56.          both.  See the notes on the WD16550 in ASYNC.DOC for more
  57.          information.
  58.  
  59.  
  60.  
  61.  
  62.          Conversion LIBs and a batch file were added to support Zortech
  63.          C / C++.  C++ header files and a C++ demo program for either
  64.          Turbo C++ or Zortech C++ were added.
  65.  
  66.          Two new macros are now defined in COMM.H.  They are:
  67.  
  68.          async_txcnt(ASYNC *port) -- returns number of bytes left
  69.                                      in the transmit buffer still to
  70.                                      be transmitted.  Use async_txempty
  71.                                      if you are waiting for 0 byte
  72.                                      condition -- it's more efficient.
  73.  
  74.          async_rxfree(ASYNC *port) - returns bytes of free space left
  75.                                      in the receive buffer.
  76.  
  77.  
  78.          VIDEO FUNCTIONS:
  79.  
  80.          One minor bug was fixed.  The rd_scrnd function returned an
  81.          incorrect pointer if the function was called with a request to
  82.          read 0 bytes.  The result string was correct but the return
  83.          value was wrong.  It now returns the correct pointer.
  84.  
  85.          A new global variable was added to control whether a displayed
  86.          backspace character was destructive or non-destructive.
  87.          Previously it was always destructive and that still is the
  88.          default.  The variable is v_bksp.  Setting v_bksp to 0 will
  89.          cause the backspace character to be non-destructive.
  90.  
  91.  
  92.  
  93.  
  94.                             MCOMM 5.20 UPGRADE NOTES
  95.  
  96.             Major changes in this version of MCOMM are support for the
  97.          16550 UART's FIFO mode of operation, changes in the header
  98.          files, new time-out functions, and updated documentation.
  99.  
  100.  
  101.          16550 UART SUPPORT:
  102.  
  103.             The async code now supports the 16550 UART's FIFO mode of
  104.             operation.  Key features are:
  105.  
  106.             1) The async_open function automatically detects a 16550 and
  107.                enables its FIFOs (can be optionally defeated).
  108.  
  109.             2) Functions are provided to set the receiver FIFO trigger
  110.                level and to control the maximum number of bytes to load
  111.                into the transmit FIFO at one time.
  112.  
  113.             3) The interrupt handler has been re-written to make most
  114.                efficient use of the FIFO registers (they process
  115.                multiple bytes per interrupt).
  116.  
  117.             ASYNC.DOC contains full descriptions of the new functions
  118.             and changes made to the old functions.  It also has some
  119.             information on how to set the receiver FIFO trigger level
  120.             and the 'maximum number of bytes to transmit to the FIFOs at
  121.             one time' level to achieve the best results.
  122.  
  123.  
  124.          HEADER FILE CHANGES:
  125.  
  126.             Due to stricter type checking of newer compilers, several
  127.             functions that formerly were declared as taking 'char' argu-
  128.             ments are now declared as taking 'int' arguments.  This
  129.             prevents getting an excessive number of warnings when pass-
  130.             ing constants to these functions.
  131.  
  132.             The 'cdecl' keyword was added to the function prototypes to
  133.             prevent problems when compiling with Microsoft's 'fastcall'
  134.             option enabled.  This keyword, as well as the 'near' and
  135.             'far' keywords, may not be compatible with your compiler.
  136.             See MUSTREAD.DOC for more information.
  137.  
  138.             All the video functions are now prototyped in ANSIDRV.H.
  139.             Before half of them were in ANSIDRV.H and the rest were in
  140.             EXTRA.H.
  141.  
  142.  
  143.          TIME OUT FUNCTIONS:
  144.  
  145.             The time-out functions have been changed to a new version
  146.             that takes a pointer to a 'long' rather than a pointer to a
  147.             TIMEOUT structure.  The new functions are faster and work
  148.             with longer timeouts than the old versions.  Converting to
  149.             the new style consists mainly of changing all occurrences of
  150.             'struct TIMEOUT' in your code to 'long'.
  151.  
  152.